package com.logic.service;

import java.util.HashMap;
import java.util.List;

import org.primefaces.model.chart.BarChartModel;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.LineChartModel;

import com.database.bean.Agent;
import com.database.bean.BaseBean;
import com.database.bean.Game;
import com.database.bean.News;
import com.database.bean.Product;
import com.database.bean.Round;
import com.database.bean.Setting;
import com.database.bean.Supplier;
import com.math.util.InitializationBean;
import com.math.util.StatisticBean;

public interface AdminService extends BaseService<BaseBean> {

	public abstract List<Game> getAllGames();
	
	public abstract List<Supplier> getAllSuppliers();
	
	public abstract List<Product> getAllProducts();
	
	public abstract List<Product> getAllActiveProducts(); 
	
	public abstract BarChartModel getMarketGameBudgetChart(Game game);
	
	public abstract BarChartModel getMarketGameImageChart(Game game);
	
	public abstract BarChartModel getMarketGameTopSellingsChart(Game game,int top);
	
	public abstract LineChartModel getMarketGameRoundDecisionRevenue(Game game);
	
	public abstract LineChartModel getMarketGameRoundDecisionBudget(Game game);
	
	public LineChartModel getMarketGameImageDevelopment(Game game,Setting setting);
	
	public abstract List<StatisticBean> getMarketGameRoundDecisions(Game game);
	
	public abstract List<StatisticBean> getAgentRoundInformation(Game game);
	
	public List<StatisticBean> getMarketGameCompanyProducts(Game game);
	
	public List<StatisticBean> getMarketGameProducts();
	
	public LineChartModel getMarketGameRoundDecisionMarketingInvestment(Game game);
	
	public LineChartModel getMarketGameRoundDecisionEducationInvestment(Game game);
	
	public List<News> getLastNewsForGame(Game game,Integer amount);
	
	public HashMap<String,String> getGameDropdown();
	
	public HashMap<String,String> getSuppliersDropdown();
	
	public Supplier getSupplierById(Integer id);
	
	public Round getRoundById(Integer id);
	
	public List<StatisticBean> getMarketGameAgentTypeSales(Game game);
	
	public void deleteAgentWithAgentTypeId(Integer agentTypeId);
	
	public List<Agent> getAgentsWithAgentTypeId(Integer agentTypeId);
	
	public List<StatisticBean> getMarketGameDecisionsAtRound(Round round);
	
	public void saveInitialization(InitializationBean initBean);
	
	public LineChartModel getMarketGameRoundDecisionOverdraftCosts(Game game);
	
	public LineChartModel getMarketGameRoundDecisionLogisticCosts(Game game);
	
	public LineChartModel getMarketGameRoundDecisionExpenses(Game game);
	
	public LineChartModel getMarketPortfolioCostsCurve(Setting setting);
	
	public LineChartModel getMarketGameSellingsDevelopment(Game game);
	
	public CartesianChartModel getMarketGameAgenttypeAmount(Game game);
}